﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lessson15_面向对象相关结构体与类的区别
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //结构体存在栈中，而类存在于堆中
            //结构体成员不能使用protected修饰符而类可以
            //结构体不能申明无参构造函数
            //结构体在构造函数时必须初始化所有成员变量而类随意
            //结构体不能在自己内部申明和自己一样的结构体变量
            //结构体不能申明析构函数，而类可以
            //结构体不能被静态static修饰，而类可以
            #region 结构体的特别之处

            //结构体可以继承接口， 因为接口是行为的抽象
            //结构体不能继承结构体，也不能继承类
            #endregion

            #region   如何选择结构体和类
            //想要继承和多态时，直接淘汰结构体，比如玩家，怪物等等
            //对象时数据集合时，优先考虑结构体，比如位置，坐标
            // 从值类型和引用类型赋值时的区别上去考虑，比如经常被赋值传递的对象
            //改变赋值对象，原对象不想跟着变化时，就用结构体比如坐标，向量，旋转等等

            #endregion 
        }
    }
}
